/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package xmlaufgabe3;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Observable;
import java.util.Observer;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

/**
 * View nach MVC Pattern. Stellt ein Protokollfenster mit Ausgabe "Konto Nr. Nummer
 * ----> Aktion: Wert Euro am Datum um Zeit" dar.
 * 
 * @author Adrian Cieluch
 * @version 1.0, 11/3/11
 */
public class TransactionsView extends JPanel implements Observer {
    /**
     * Speichert Model
     */
    private AccountModel model;
    
    /**
     * Textfeld des Protokollfensters
     */
    private JTextArea textArea;
    
    /**
     * Container fuer Scrollbereich
     */
    private JScrollPane scrollPane;
    
    /**
     * Macht das Model bekannt, initialisiert Textfeld und ordnet es dem Scrollbereich
     * zu.
     * 
     * @param m AccountModel
     */
    public TransactionsView(AccountModel m) {
        model = m;
        
        textArea = new JTextArea();
        textArea.setEditable(false);
        scrollPane = new JScrollPane(textArea);

        this.setLayout(new BorderLayout());
        this.add(scrollPane, BorderLayout.CENTER);
        this.setPreferredSize(new Dimension(200, 200));
    }
    
    /**
     * Updatemethode des Observers. Fuegt bei einer Transaktion (Aenderung des Models)
     * eine Nachricht dem Protokollfenster in der Form "Konto Nr. Nummer ---->
     * Aktion: Wert Euro am Datum um Zeit" an.
     * 
     * @param obs Das zu beobachtende Model
     * @param obj Transaktion
     */
    @Override
    public void update(Observable obs, Object obj) {
        Transaction transaction = (Transaction)obj;
        SimpleDateFormat formatter = new SimpleDateFormat ("dd.MM.yyyy 'um' HH:mm:ss ");
        Date currentTime = new Date();
        
        if(transaction.getAction().equals("deposit")) {
            textArea.append("Konto Nr. " + transaction.getID() + " ---> " + "Einzahlung: "
                    + transaction.getAmount() + " Euro am " + formatter.format(currentTime) + System.getProperty("line.separator"));
        }
        
        if(transaction.getAction().equals("withdrawal")) {
            textArea.append("Konto Nr. " + transaction.getID() + " ---> " + "Auszahlung: "
                    + transaction.getAmount() + " Euro am " + formatter.format(currentTime) + System.getProperty("line.separator"));
        }
        
    }
    
}
